﻿/*===================================================
* CLR版本  : 4.0.30319.42000 
* 类名称   : Disposer
* 文 件 名 : Disposer 
* 类描述   :
* 创建人   : oream
* 创建时间 : 2018/3/4 0:01:09
* 修改人   : 
* 修改时间 :
* 版本： @version 1.0
=====================================================*/

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Model
{
  public abstract class AOjbect : ISupportInitialize
  {
    /// <summary>
    /// 初始化开始
    /// </summary>
    public virtual void BeginInit()
    {
    }

    /// <summary>
    /// 初始化结束
    /// </summary>
    public virtual void EndInit()
    {
    }
  }

  public abstract class Disposer : AOjbect, IDisposable
  {
    /// <summary>
    /// ID
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// 是否来自对象池
    /// </summary>
    public bool IsFromPool { get; set; }

    protected Disposer()
    {
      this.Id = IDGenerater.GenerateId();
    }

    protected Disposer(long id)
    {
      this.Id = id;
    }

    public virtual void Dispose()
    {
      this.Id = 0;
      if (this.IsFromPool)
      {
        Game.ObjectPool.Recycle(this);
      }
    }
  }
}
